package com.redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * 连接池工具类
 */
public class JedisPoolConnectRedis {

    private final static JedisPool jedisPool;

    /*  环境变量，隐藏真实值

    private static final String HOST = "127.0.0.1";

    private static final int PORT = 6379;

    private static final String PASSWORD = "123456"
     */

    static {
        // 创建连接池配置对象
        final JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        // 设置最大连接数， 默认 8
        jedisPoolConfig.setMaxTotal(5);
        // 设置最大空闲数， 默认 8
        jedisPoolConfig.setMaxIdle(5);
        // 设置最少空弦数， 默认 0
        jedisPoolConfig.setMinIdle(0);
        // 设置等待时间 ms    即:当资源池连接用尽后，调用者最大等待时间 【默认-1，表示永不超时     is deprecated
        jedisPoolConfig.setMaxWaitMillis(100);
        /* java.time.Duration类   Duration不包含毫秒这个属性   duration.toMillis()方法获得
        jedisPoolConfig.setMaxWait();
         */
        //客户端向连接池借用或归还时，是否会在内部进行有效性检测（ping），无效的资源将被移除 【默认值：false】
        jedisPoolConfig.setTestOnBorrow(false);
        jedisPoolConfig.setTestOnReturn(false);
        //初始化 JedisPool 对象 默认 "127.0.0.1", 6379
        jedisPool = new JedisPool(jedisPoolConfig, "192.168.76.3", 6379, 100, "wx123456");
    }

    /**
     * 获取 Jedis 对象
     * @return Jedis
     */
    public static Jedis getJedis() {
        return jedisPool.getResource();
    }
}
